﻿$(document).ready(function() {
   //$("input:checkbox:not(.notOverride)").checkBoxOverride({styleType:"cb-iphone-animate"});
   //$("input:radio:not(.notOverride)").radioBoxOverride();
})
$.fn.checkBoxOverride=function(params){    
    var options={
            enableText:"ON",
            disableText:"OFF",
            styleType:"cb-normal",
            buttonWidth:"50px",
            centerWidth:"30px"
            };
    if(options!=null){
        $.extend(options,params);
		if(getUnit(options.buttonWidth)!=getUnit(options.centerWidth)) throw("\u5355\u4F4D\u4E0D\u4E00\u81F4\uFF01");
    }
    
    function cb_normal(domObj){
        $(domObj).hide();
        var checkbox=document.createElement("div");
        $(checkbox).addClass("cb-normal");
        if(domObj.checked){
            $(checkbox).addClass("checked");
        }
        $(checkbox).insertAfter(domObj);
        $(checkbox).click(function(){
            var tmp=domObj;
            if(domObj.checked){
                domObj.checked=false;
                $(checkbox).removeClass("checked");                
            }
            else{
                domObj.checked=true;
                $(checkbox).addClass("checked");
            }
        
        })
    }
    function cb_iphone_static(domObj){
        $(domObj).hide();
        var checkbox=document.createElement("div");
        $(checkbox).addClass("cb-iphone-static");
        var context="";
        if(domObj.checked){
             context+='<div class="cb-enable checked">' + options.enableText + '</div>';
             context+='<div class="cb-disable">' + options.disableText + '</div>';
        }
        else{
             context+='<div class="cb-enable">' + options.enableText + '</div>';
             context+='<div class="cb-disable checked">' + options.disableText + '</div>';
        }
        $(checkbox).html(context);
        $(checkbox).insertAfter($(domObj));
		$("div",checkbox).css("width",options.buttonWidth);
        
        $(".cb-enable",checkbox).click(function(){
            domObj.checked=true;
            $(".cb-enable",checkbox).addClass("checked");
            $(".cb-disable",checkbox).removeClass("checked");
        });
        
        $(".cb-disable",checkbox).click(function(){
            domObj.checked=false;
            $(".cb-disable",checkbox).addClass("checked");
            $(".cb-enable",checkbox).removeClass("checked");
        });
    }
    function cb_iphone_animate(domObj){
        $(domObj).hide();
        var checkbox=document.createElement("div");
        $(checkbox).addClass("cb-iphone-animate");
        var context='<div class="cb-enable" >' + options.enableText + '</div>';
        context+='<div class="cb-center"><div class="cb-center-left"></div><div class="cb-center-right"></div></div>';
        context+='<div class="cb-disable">' + options.disableText + '</div>';
        $(checkbox).html(context);
        $(checkbox).insertAfter(domObj);
        $(".cb-enable",checkbox).css("width",options.buttonWidth);
        $(".cb-center",checkbox).css("width",options.centerWidth);
        $(".cb-disable",checkbox).css("width",options.buttonWidth);
        $(checkbox).css("width",getNumber(options.buttonWidth) + getNumber(options.centerWidth) + getUnit(options.buttonWidth));
        if(domObj.checked){
           $(".cb-enable",checkbox).show();           
           $(".cb-disable",checkbox).hide();
           $(".cb-center",checkbox).css("marginLeft","-10px");
        }
        else{
           $(".cb-disable",checkbox).show();         
           $(".cb-enable",checkbox).hide();
           $(".cb-center",checkbox).css("marginRight","-10px");           
        }
        $(".cb-center",checkbox).click(function(){
            if(domObj.checked){
                domObj.checked=false;
                $(".cb-center",checkbox).animate({marginLeft:"0px",marginRight:"-10px"},200);                
                $(".cb-disable",checkbox).animate({width:"show"},200);                
                $(".cb-enable",checkbox).animate({width:"hide"},200);  
            }
            else{
                domObj.checked=true;
                $(".cb-center",checkbox).animate({marginLeft:"-10px",marginRight:"0px"},200);
                $(".cb-enable",checkbox).animate({width:"show"},200);    
                $(".cb-disable",checkbox).animate({width:"hide"},200);          
            }        
        })
        
    }
	function getNumber(obj){
        var result=obj.match(/^(\d*)(.*)$/);
        if(result==null) throw("\u53C2\u6570\u7C7B\u578B\u4E0D\u6B63\u786E\uFF01");
        return parseInt(result[1]);
    }
    function getUnit(obj){
        var result=obj.match(/^(\d*)(.*)$/);
        if(result==null) throw("\u53C2\u6570\u7C7B\u578B\u4E0D\u6B63\u786E\uFF01");
        return result[2].toString();
    }
    this.each(function(){
        if(options.styleType=="cb-normal") cb_normal(this);
        else if(options.styleType=="cb-iphone-static") cb_iphone_static(this);
        else if(options.styleType=="cb-iphone-animate") cb_iphone_animate(this);
    })    
    return this;
}
$.fn.radioBoxOverride=function(params){
    var options={
        styleType:'rb-normal'
    };
    if(params!=null){
        $.extend(options,params);
    }
    function rb_normal(domObj){
        $(domObj).hide();
        var radiobox=document.createElement("div");
        $(radiobox).addClass("rb-normal");
        $(radiobox).insertAfter(domObj)
        $(domObj).data("radiobox",radiobox);
        if(domObj.checked){
            $(radiobox).addClass("checked");
        }
        $(radiobox).click(function(){
            $(domObj).trigger("click");     
            if(domObj.checked){
                $(radiobox).addClass("checked");
            }
            else{
                $(radiobox).removeClass("checked");
            }
            $("input:radio[name=" + domObj.name + "]",domObj.form?domObj.form:document).each(function(){
                var obj=$(this).data("radiobox");
                if(this.checked){
                    $(obj).addClass("checked");
                }
                else{
                    $(obj).removeClass("checked");
                }
            })
        });
        $("label[for=" + domObj.id + "]").add("label[for=" + domObj.name + "]").click(function(){
            $(radiobox).trigger("click");
        })       
    }
    this.each(function(){
        if(options.styleType=="rb-normal") rb_normal(this);
    })

}